/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entregapersistencia;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author dianacha
 */
@Entity
@Table(name = "producto")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Producto.findAll", query = "SELECT p FROM Producto p"),
    @NamedQuery(name = "Producto.findByCodigo", query = "SELECT p FROM Producto p WHERE p.codigo = :codigo"),
    @NamedQuery(name = "Producto.findByNombre", query = "SELECT p FROM Producto p WHERE p.nombre = :nombre"),
    @NamedQuery(name = "Producto.findByImagen", query = "SELECT p FROM Producto p WHERE p.imagen = :imagen"),
    @NamedQuery(name = "Producto.findByEmpresaFabricante", query = "SELECT p FROM Producto p WHERE p.empresaFabricante = :empresaFabricante"),
    @NamedQuery(name = "Producto.findByDescripcion", query = "SELECT p FROM Producto p WHERE p.descripcion = :descripcion"),
    @NamedQuery(name = "Producto.findByIva", query = "SELECT p FROM Producto p WHERE p.iva = :iva"),
    @NamedQuery(name = "Producto.findByTalla", query = "SELECT p FROM Producto p WHERE p.talla = :talla"),
    @NamedQuery(name = "Producto.findByUnidadesDisponibles", query = "SELECT p FROM Producto p WHERE p.unidadesDisponibles = :unidadesDisponibles")})
public class Producto implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "codigo")
    private String codigo;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @Basic(optional = false)
    @Column(name = "imagen")
    private String imagen;
    @Basic(optional = false)
    @Column(name = "empresa_fabricante")
    private String empresaFabricante;
    @Basic(optional = false)
    @Column(name = "descripcion")
    private String descripcion;
    @Basic(optional = false)
    @Column(name = "iva")
    private int iva;
    @Column(name = "talla")
    private String talla;
    @Basic(optional = false)
    @Column(name = "unidades_disponibles")
    private int unidadesDisponibles;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private Chaqueta chaqueta;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private DescuentosProducto descuentosProducto;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private Jean jean;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private DetallesProducto detallesProducto;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private PreciosProducto preciosProducto;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private Blusa blusa;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private Libro libro;
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "producto")
    private Brasier brasier;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "producto")
    private Collection<ProductoFactura> productoFacturaCollection;

    public Producto() {
    }

    public Producto(String codigo) {
        this.codigo = codigo;
    }

    public Producto(String codigo, String nombre, String imagen, String empresaFabricante, String descripcion, int iva, int unidadesDisponibles) {
        this.codigo = codigo;
        this.nombre = nombre;
        this.imagen = imagen;
        this.empresaFabricante = empresaFabricante;
        this.descripcion = descripcion;
        this.iva = iva;
        this.unidadesDisponibles = unidadesDisponibles;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getImagen() {
        return imagen;
    }

    public void setImagen(String imagen) {
        this.imagen = imagen;
    }

    public String getEmpresaFabricante() {
        return empresaFabricante;
    }

    public void setEmpresaFabricante(String empresaFabricante) {
        this.empresaFabricante = empresaFabricante;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public int getIva() {
        return iva;
    }

    public void setIva(int iva) {
        this.iva = iva;
    }

    public String getTalla() {
        return talla;
    }

    public void setTalla(String talla) {
        this.talla = talla;
    }

    public int getUnidadesDisponibles() {
        return unidadesDisponibles;
    }

    public void setUnidadesDisponibles(int unidadesDisponibles) {
        this.unidadesDisponibles = unidadesDisponibles;
    }

    public Chaqueta getChaqueta() {
        return chaqueta;
    }

    public void setChaqueta(Chaqueta chaqueta) {
        this.chaqueta = chaqueta;
    }

    public DescuentosProducto getDescuentosProducto() {
        return descuentosProducto;
    }

    public void setDescuentosProducto(DescuentosProducto descuentosProducto) {
        this.descuentosProducto = descuentosProducto;
    }

    public Jean getJean() {
        return jean;
    }

    public void setJean(Jean jean) {
        this.jean = jean;
    }

    public DetallesProducto getDetallesProducto() {
        return detallesProducto;
    }

    public void setDetallesProducto(DetallesProducto detallesProducto) {
        this.detallesProducto = detallesProducto;
    }

    public PreciosProducto getPreciosProducto() {
        return preciosProducto;
    }

    public void setPreciosProducto(PreciosProducto preciosProducto) {
        this.preciosProducto = preciosProducto;
    }

    public Blusa getBlusa() {
        return blusa;
    }

    public void setBlusa(Blusa blusa) {
        this.blusa = blusa;
    }

    public Libro getLibro() {
        return libro;
    }

    public void setLibro(Libro libro) {
        this.libro = libro;
    }

    public Brasier getBrasier() {
        return brasier;
    }

    public void setBrasier(Brasier brasier) {
        this.brasier = brasier;
    }

    @XmlTransient
    public Collection<ProductoFactura> getProductoFacturaCollection() {
        return productoFacturaCollection;
    }

    public void setProductoFacturaCollection(Collection<ProductoFactura> productoFacturaCollection) {
        this.productoFacturaCollection = productoFacturaCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigo != null ? codigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Producto)) {
            return false;
        }
        Producto other = (Producto) object;
        if ((this.codigo == null && other.codigo != null) || (this.codigo != null && !this.codigo.equals(other.codigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entregapersistencia.Producto[ codigo=" + codigo + " ]";
    }
    
}
